using StudentManagement.Application.DTOs;

namespace StudentManagement.Application.Services;

public interface IScoreService
{
    Task<ScoreDTO> GetScoreByIdAsync(int id);
    Task<ScoreDTO> GetScoreByStudentAndCourseAsync(int studentId, int courseId);
    Task<IEnumerable<ScoreDTO>> GetAllScoresAsync();
    Task<IEnumerable<ScoreDTO>> GetScoresByStudentIdAsync(int studentId);
    Task<IEnumerable<ScoreDTO>> GetScoresByCourseIdAsync(int courseId);
    Task<IEnumerable<ScoreDTO>> SearchScoresAsync(string keyword);
    Task<ScoreDTO> CreateScoreAsync(ScoreDTO scoreDTO);
    Task<ScoreDTO> UpdateScoreAsync(int id, ScoreDTO scoreDTO);
    Task DeleteScoreAsync(int id);
    Task<bool> ScoreExistsAsync(int id);
    Task<decimal?> GetAverageScoreByCourseIdAsync(int courseId);
}